package cn.devzyh.dao;

import cn.devzyh.domain.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 角色模块持久层
 */
public interface RoleMapper {

    /**
     * 根据条件查询角色列表
     *
     * @return
     */
    List<Role> findByCondition(Role role);

    /**
     * 新增角色信息
     *
     * @param role
     */
    void saveRole(Role role);

    /**
     * 修改角色信息
     *
     * @param role
     */
    void updateRole(Role role);

    /**
     * 查询指定角色对应菜单列表
     *
     * @param roleId
     * @return
     */
    Integer[] findMenuByRoleId(Integer roleId);

    /**
     * 删除指定角色菜单关联数据
     *
     * @param roleId
     */
    void deleteMenuByRoleId(Integer roleId);

    /**
     * 新增指定角色菜单关联数据
     *
     * @param roleMenuRelation
     */
    void saveRoleMenu(RoleMenuRelation roleMenuRelation);

    /**
     * 删除指定角色信息
     *
     * @param roleId
     */
    void deleteByRoleId(Integer roleId);

    /**
     * 查询指定角色对应的资源分类列表
     *
     * @param roleId
     * @return
     */
    List<ResourceCategory> findResourceCategoryListByRoleId(Integer roleId);

    /**
     * 查询指定角色及分类对应的资源列表
     *
     * @param roleId
     * @return
     */
    List<Resource> findResourceListByCondition(@Param("categoryId") Integer categoryId,
                                               @Param("roleId") Integer roleId);

    /**
     * 删除指定角色资源关联关系
     *
     * @param roleId
     */
    void deleteRoleResourceRelationByRoleId(Integer roleId);

    /**
     * 新增角色资源关联关系数据
     */
    void saveRoleResourceRelation(RoleResourceRelation relation);

}
